package com.newshub.app.data.repository

import com.newshub.app.data.model.News
import com.newshub.app.data.model.NewsDetail
import com.newshub.app.data.model.VideoNews
import com.newshub.app.network.ApiService
import com.newshub.app.network.NetworkModule
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.core.Single
import kotlinx.coroutines.runBlocking

object NewsRepository {
    
    // 使用内存中的集合存储收藏状态
    private val favoriteNewsIds = mutableSetOf<String>()
    
    // 获取API服务
    private val apiService: ApiService by lazy {
        NetworkModule.apiService
    }
    
    /**
     * 获取头条新闻
     */
    fun getHeadlineNews(start: Int = 0, end: Int = 20): Observable<List<News>> {
        return Observable.fromCallable {
            try {
                val response = runBlocking { apiService.getHeadlineNews(start, end) }
                if (response.isSuccessful) {
                    val newsList = response.body()?.get("T1348647853363") ?: emptyList()
                    newsList.map { news ->
                        news.copy(isFavorite = favoriteNewsIds.contains(news.docid))
                    }
                } else {
                    // API失败时返回模拟数据
                    createMockNewsList().map { news ->
                        news.copy(isFavorite = favoriteNewsIds.contains(news.docid))
                    }
                }
            } catch (e: Exception) {
                // 网络错误时返回模拟数据
                createMockNewsList().map { news ->
                    news.copy(isFavorite = favoriteNewsIds.contains(news.docid))
                }
            }
        }
    }
    
    /**
     * 获取精选新闻
     */
    fun getFeaturedNews(start: Int = 0, end: Int = 20): Observable<List<News>> {
        return Observable.fromCallable {
            // 返回模拟数据，并根据收藏状态更新
            createMockNewsList().map { news ->
                news.copy(isFavorite = favoriteNewsIds.contains(news.docid))
            }
        }
    }
    
    /**
     * 获取娱乐新闻
     */
    fun getEntertainmentNews(start: Int = 0, end: Int = 20): Observable<List<News>> {
        return Observable.fromCallable {
            // 返回模拟数据，并根据收藏状态更新
            createMockNewsList().map { news ->
                news.copy(isFavorite = favoriteNewsIds.contains(news.docid))
            }
        }
    }
    
    /**
     * 获取体育新闻
     */
    fun getSportsNews(start: Int = 0, end: Int = 20): Observable<List<News>> {
        return Observable.fromCallable {
            // 返回模拟数据，并根据收藏状态更新
            createMockNewsList().map { news ->
                news.copy(isFavorite = favoriteNewsIds.contains(news.docid))
            }
        }
    }
    
    /**
     * 获取汽车新闻
     */
    fun getAutoNews(start: Int = 0, end: Int = 20): Observable<List<News>> {
        return Observable.fromCallable {
            // 返回模拟数据，并根据收藏状态更新
            createMockNewsList().map { news ->
                news.copy(isFavorite = favoriteNewsIds.contains(news.docid))
            }
        }
    }
    
    /**
     * 获取视频新闻
     */
    fun getVideoNews(size: Int = 20): Observable<List<VideoNews>> {
        return Observable.fromCallable {
            try {
                val response = runBlocking { apiService.getVideoNews(size = size) }
                if (response.isSuccessful) {
                    response.body()?.get("T1457068979049") ?: emptyList()
                } else {
                    // API失败时返回模拟数据
                    createMockVideoNewsList()
                }
            } catch (e: Exception) {
                // 网络错误时返回模拟数据
                createMockVideoNewsList()
            }
        }
    }
    
    /**
     * 获取新闻详情
     */
    fun getNewsDetail(docid: String): Single<NewsDetail> {
        return Single.fromCallable {
            getNewsDetailSync(docid) ?: NewsDetail(
                docid = docid,
                title = "新闻详情标题",
                body = "这是新闻的详细内容...",
                source = "新闻来源",
                ptime = "2024-01-15 10:30:00"
            )
        }
    }
    
    /**
     * 同步获取新闻详情
     */
    fun getNewsDetailSync(docid: String): NewsDetail? {
        return try {
            val response = runBlocking { apiService.getNewsDetail(docid) }
            if (response.isSuccessful && response.body() != null) {
                response.body()
            } else {
                // API失败时返回不同ID的详细模拟数据
                getMockNewsDetail(docid)
            }
        } catch (e: Exception) {
            // 网络错误时返回不同ID的详细模拟数据
            getMockNewsDetail(docid)
        }
    }
    
    /**
     * 根据ID获取不同的模拟新闻详情
     */
    private fun getMockNewsDetail(docid: String): NewsDetail {
        return when (docid) {
            "1" -> NewsDetail(
                docid = docid,
                title = "科技新闻：人工智能技术取得重大突破",
                body = """
                    人工智能技术在全球范围内取得了重大突破，特别是在以下几个领域：
                    
                    1. 自然语言处理：GPT系列模型在理解和生成人类语言方面达到了前所未有的水平。
                    2. 计算机视觉：图像识别和视频分析技术已经超越了人类专家的准确率。
                    3. 自动驾驶：无人驾驶汽车在复杂路况下的表现越来越稳定。
                    4. 医疗诊断：AI辅助诊断系统在多种疾病检测中显示出极高的准确性。
                    
                    这些突破不仅改变了我们的生活方式，也为各行各业带来了新的机遇和挑战。
                    专家预测，未来5年内，人工智能将在更多领域实现商业化应用。
                """.trimIndent(),
                source = "科技日报",
                ptime = "2024-01-15 10:30:00",
                img = listOf("https://picsum.photos/600/400?random=" + docid)
            )
            "2" -> NewsDetail(
                docid = docid,
                title = "体育新闻：世界杯决赛精彩回顾",
                body = """
                    本届世界杯决赛在卡塔尔举行，阿根廷队与法国队展开了一场史诗般的对决：
                    
                    比赛过程：
                    - 上半场：阿根廷队凭借梅西的进球取得领先
                    - 下半场：法国队姆巴佩梅开二度，将比分扳平
                    - 加时赛：双方各进一球，比赛进入点球大战
                    - 点球大战：阿根廷队以4-2获胜，第三次捧起大力神杯
                    
                    这场比赛被誉为世界杯历史上最精彩的决赛之一，梅西终于圆了世界杯冠军梦。
                    现场观众和全球球迷都为这场精彩的比赛而疯狂。
                """.trimIndent(),
                source = "体育周报",
                ptime = "2024-01-15 09:15:00",
                img = listOf("https://picsum.photos/600/400?random=" + docid)
            )
            "3" -> NewsDetail(
                docid = docid,
                title = "财经新闻：股市今日表现强劲",
                body = """
                    今日股市表现强劲，主要指数均出现上涨。分析师认为，这一上涨主要得益于以下几个因素：
                    
                    1. 政策利好：政府近期出台的一系列经济刺激政策为市场注入了信心。
                    2. 企业盈利改善：多家上市公司公布的季度财报显示盈利状况良好。
                    3. 外资流入：海外投资者对中国市场的信心持续增强。
                    
                    展望后市，专家建议投资者保持谨慎乐观的态度，关注政策动向和市场变化。
                    
                    具体来看，科技板块领涨，其中人工智能、新能源等概念股表现突出。传统制造业也有不错表现，
                    钢铁、有色金属等行业受益于需求回暖。
                    
                    投资者需要密切关注宏观经济数据和企业基本面变化，做好风险控制。
                """.trimIndent(),
                source = "财经时报",
                ptime = "2024-01-15 08:45:00",
                img = listOf("https://picsum.photos/600/400?random=" + docid)
            )
            "4" -> NewsDetail(
                docid = docid,
                title = "娱乐新闻：明星演唱会门票热销",
                body = """
                    知名歌手演唱会门票开售即被抢购一空，粉丝热情高涨：
                    
                    演唱会详情：
                    - 时间：2024年2月14日情人节
                    - 地点：国家体育场
                    - 票价：从280元到1680元不等
                    - 售票情况：开售5分钟内全部售罄
                    
                    这位歌手以其独特的音乐风格和舞台表现力赢得了众多粉丝的喜爱。
                    此次演唱会将是其巡回演出的首站，后续还将在其他城市举办。
                    
                    粉丝们纷纷表示，能够抢到票非常幸运，期待在演唱会上与偶像近距离接触。
                """.trimIndent(),
                source = "娱乐周刊",
                ptime = "2024-01-15 14:20:00",
                img = listOf("https://picsum.photos/600/400?random=" + docid)
            )
            "5" -> NewsDetail(
                docid = docid,
                title = "军事新闻：国防科技新突破",
                body = """
                    我国国防科技领域取得重要进展，新型武器装备研发成功：
                    
                    技术突破：
                    1. 高超音速武器：成功测试了新型高超音速导弹系统
                    2. 隐身技术：在隐身材料方面取得重大突破
                    3. 电子战系统：新型电子战装备性能显著提升
                    4. 无人作战平台：无人机集群作战技术日趋成熟
                    
                    这些技术突破不仅提升了我国的国防实力，也为维护世界和平做出了重要贡献。
                    专家表示，这些成果标志着我国在相关技术领域已经达到世界先进水平。
                    
                    未来，我国将继续加大国防科技投入，为维护国家安全提供更强有力的保障。
                """.trimIndent(),
                source = "军事时报",
                ptime = "2024-01-15 11:30:00",
                img = listOf("https://picsum.photos/600/400?random=" + docid)
            )
            "6" -> NewsDetail(
                docid = docid,
                title = "汽车新闻：新能源汽车销量创新高",
                body = """
                    新能源汽车市场持续火爆，销量再创新高，充电设施不断完善：
                    
                    市场表现：
                    - 月度销量：12月新能源汽车销量同比增长85%
                    - 市场占有率：新能源汽车占汽车总销量的35%
                    - 品牌表现：比亚迪、特斯拉、蔚来等品牌表现突出
                    
                    技术发展：
                    1. 电池技术：续航里程不断提升，充电时间大幅缩短
                    2. 智能化：自动驾驶技术日趋成熟
                    3. 充电网络：全国充电桩数量已超过200万个
                    
                    政策支持：
                    政府继续出台优惠政策支持新能源汽车发展，包括购车补贴、免购置税等。
                    预计未来几年，新能源汽车市场将保持高速增长态势。
                """.trimIndent(),
                source = "汽车世界",
                ptime = "2024-01-15 13:15:00",
                img = listOf("https://picsum.photos/600/400?random=" + docid)
            )
            "7" -> NewsDetail(
                docid = docid,
                title = "健康新闻：冬季养生小贴士",
                body = """
                    冬季是养生的好时节，专家建议多食用温补食物，注意保暖：
                    
                    饮食建议：
                    1. 温补食物：羊肉、牛肉、鸡肉等温性食物
                    2. 蔬菜水果：萝卜、白菜、苹果、梨等应季蔬果
                    3. 汤品：多喝热汤，如鸡汤、骨头汤等
                    
                    生活起居：
                    - 早睡晚起：顺应自然规律，保证充足睡眠
                    - 适度运动：选择室内运动，如瑜伽、太极等
                    - 保暖防寒：注意头部、颈部、脚部保暖
                    
                    心理调节：
                    冬季容易情绪低落，要保持乐观心态，多与朋友交流。
                """.trimIndent(),
                source = "健康时报",
                ptime = "2024-01-15 12:30:00",
                img = listOf("https://picsum.photos/600/400?random=" + docid)
            )
            "8" -> NewsDetail(
                docid = docid,
                title = "教育新闻：在线教育发展迅速",
                body = """
                    疫情期间在线教育快速发展，为学生学习提供了新的选择：
                    
                    发展现状：
                    1. 用户增长：在线教育用户数量大幅增长
                    2. 技术升级：AI、VR等技术在教育中应用
                    3. 内容丰富：课程种类和内容质量不断提升
                    
                    优势特点：
                    - 时间灵活：学生可以自主安排学习时间
                    - 地点自由：在家就能接受优质教育
                    - 资源丰富：可以接触到更多优质教学资源
                    
                    未来趋势：
                    在线教育将成为教育的重要组成部分，线上线下融合发展。
                """.trimIndent(),
                source = "教育周报",
                ptime = "2024-01-15 11:45:00",
                img = listOf("https://picsum.photos/600/400?random=" + docid)
            )
            "9" -> NewsDetail(
                docid = docid,
                title = "社会新闻：城市绿化建设取得新进展",
                body = """
                    本市绿化建设取得新进展，多个公园和绿地项目即将完工：
                    
                    建设成果：
                    1. 新建公园：3个大型公园已建成开放
                    2. 绿地面积：新增绿地面积超过100万平方米
                    3. 生态修复：多个生态修复项目进展顺利
                    
                    市民受益：
                    - 休闲娱乐：为市民提供更多休闲场所
                    - 空气质量：改善城市空气质量
                    - 生态环境：提升城市生态环境质量
                    
                    未来规划：
                    将继续加大绿化建设投入，打造更加宜居的城市环境。
                """.trimIndent(),
                source = "城市日报",
                ptime = "2024-01-15 06:30:00",
                img = listOf("https://picsum.photos/600/400?random=" + docid)
            )
            "10" -> NewsDetail(
                docid = docid,
                title = "健康新闻：专家建议保持良好作息习惯",
                body = """
                    健康专家提醒市民保持良好的作息习惯，有助于提高免疫力和工作效率：
                    
                    作息建议：
                    1. 规律作息：每天固定时间睡觉和起床
                    2. 充足睡眠：成年人每天需要7-9小时睡眠
                    3. 适度运动：每天进行30分钟中等强度运动
                    
                    健康益处：
                    - 提高免疫力：增强身体抵抗力
                    - 改善精神状态：提高工作和学习效率
                    - 预防疾病：降低各种慢性病风险
                    
                    专家提醒：
                    良好的作息习惯是健康生活的基础，需要长期坚持。
                """.trimIndent(),
                source = "健康时报",
                ptime = "2024-01-15 11:15:00",
                img = listOf("https://picsum.photos/600/400?random=" + docid)
            )
            else -> NewsDetail(
                docid = docid,
                title = "新闻详情",
                body = "这是新闻的详细内容，请稍后查看完整版本。",
                source = "新闻来源",
                ptime = "2024-01-15 12:00:00",
                img = listOf("https://picsum.photos/600/400?random=" + docid)
            )
        }
    }
    
    /**
     * 根据ID获取新闻
     */
    fun getNewsById(docid: String): News? {
        return createMockNewsList().find { it.docid == docid }?.copy(isFavorite = favoriteNewsIds.contains(docid))
    }
    
    /**
     * 搜索新闻
     */
    fun searchNews(keyword: String, page: Int = 1): Observable<List<News>> {
        return Observable.fromCallable {
            createMockNewsList()
                .filter { 
                    it.title.contains(keyword) || it.digest.contains(keyword)
                }
                .map { news ->
                    news.copy(isFavorite = favoriteNewsIds.contains(news.docid))
                }
        }
    }
    
    /**
     * 保存新闻到本地
     */
    fun saveNews(news: News) {
        // 实现收藏状态的保存
        if (news.isFavorite) {
            favoriteNewsIds.add(news.docid)
        } else {
            favoriteNewsIds.remove(news.docid)
        }
    }
    
    /**
     * 获取收藏的新闻
     */
    fun getFavoriteNews(): Observable<List<News>> {
        return Observable.fromCallable {
            if (favoriteNewsIds.isEmpty()) {
                emptyList()
            } else {
                createMockNewsList()
                    .filter { favoriteNewsIds.contains(it.docid) }
                    .map { it.copy(isFavorite = true) }
            }
        }
    }
    
    /**
     * 添加收藏
     */
    fun addToFavorite(news: News) {
        favoriteNewsIds.add(news.docid)
    }
    
    /**
     * 移除收藏
     */
    fun removeFromFavorite(docid: String) {
        favoriteNewsIds.remove(docid)
    }
    
    /**
     * 检查是否已收藏
     */
    fun isFavorite(docid: String): Boolean {
        return favoriteNewsIds.contains(docid)
    }
    
    /**
     * 切换收藏状态
     */
    fun toggleFavorite(docid: String) {
        if (favoriteNewsIds.contains(docid)) {
            favoriteNewsIds.remove(docid)
        } else {
            favoriteNewsIds.add(docid)
        }
    }
    
    /**
     * 创建模拟视频新闻数据
     */
    fun createMockVideoNewsList(): List<VideoNews> {
        return listOf(
            VideoNews(
                title = "精彩体育赛事集锦",
                url = "https://v-cdn.zjol.com.cn/280443.mp4",
                cover = "https://picsum.photos/400/300?random=video1",
                duration = 120,
                playCount = 15000,
                ptime = "2024-01-15 14:30:00"
            ),
            VideoNews(
                title = "最新科技发布会亮点回顾",
                url = "https://v-cdn.zjol.com.cn/280444.mp4",
                cover = "https://picsum.photos/400/300?random=video2",
                duration = 180,
                playCount = 25000,
                ptime = "2024-01-15 15:00:00"
            ),
            VideoNews(
                title = "财经新闻深度解析",
                url = "https://v-cdn.zjol.com.cn/280445.mp4",
                cover = "https://picsum.photos/400/300?random=video3",
                duration = 240,
                playCount = 8000,
                ptime = "2024-01-15 16:00:00"
            ),
            VideoNews(
                title = "国内新闻热点回顾",
                url = "https://v-cdn.zjol.com.cn/280446.mp4",
                cover = "https://picsum.photos/400/300?random=video4",
                duration = 200,
                playCount = 12000,
                ptime = "2024-01-15 17:00:00"
            ),
            VideoNews(
                title = "科技前沿动态",
                url = "https://v-cdn.zjol.com.cn/280447.mp4",
                cover = "https://picsum.photos/400/300?random=video5",
                duration = 160,
                playCount = 18000,
                ptime = "2024-01-15 18:00:00"
            )
        )
    }
    
    /**
     * 创建模拟新闻数据
     */
    fun createMockNewsList(): List<News> {
        return listOf(
            News(
                docid = "1",
                title = "科技新闻：人工智能技术取得重大突破",
                digest = "最新的人工智能技术在多个领域取得重大突破，为未来发展带来新的机遇...",
                source = "科技日报",
                ptime = "2024-01-15 10:30:00",
                imgsrc = "https://picsum.photos/300/200?random=1",
                url = "https://example.com/news/1",
                replyCount = 156,
                isFavorite = false,
                category = "科技"
            ),
            News(
                docid = "2",
                title = "体育新闻：世界杯决赛精彩回顾",
                digest = "本届世界杯决赛在卡塔尔举行，阿根廷队与法国队展开激烈对决...",
                source = "体育周报",
                ptime = "2024-01-15 09:15:00",
                imgsrc = "https://picsum.photos/300/200?random=2",
                url = "https://example.com/news/2",
                replyCount = 89,
                isFavorite = false,
                category = "体育"
            ),
            News(
                docid = "3",
                title = "财经新闻：股市今日表现强劲",
                digest = "今日股市表现强劲，主要指数均出现上涨，科技板块领涨...",
                source = "财经时报",
                ptime = "2024-01-15 08:45:00",
                imgsrc = "https://picsum.photos/300/200?random=3",
                url = "https://example.com/news/3",
                replyCount = 234,
                isFavorite = false,
                category = "财经"
            ),
            News(
                docid = "4",
                title = "娱乐新闻：明星演唱会门票热销",
                digest = "知名歌手演唱会门票开售即被抢购一空，粉丝热情高涨...",
                source = "娱乐周刊",
                ptime = "2024-01-15 14:20:00",
                imgsrc = "https://picsum.photos/300/200?random=4",
                url = "https://example.com/news/4",
                replyCount = 67,
                isFavorite = false,
                category = "娱乐"
            ),
            News(
                docid = "5",
                title = "军事新闻：国防科技新突破",
                digest = "我国国防科技领域取得重要进展，新型武器装备研发成功...",
                source = "军事时报",
                ptime = "2024-01-15 11:30:00",
                imgsrc = "https://picsum.photos/300/200?random=5",
                url = "https://example.com/news/5",
                replyCount = 145,
                isFavorite = false,
                category = "军事"
            ),
            News(
                docid = "6",
                title = "汽车新闻：新能源汽车销量创新高",
                digest = "新能源汽车市场持续火爆，销量再创新高，充电设施不断完善...",
                source = "汽车世界",
                ptime = "2024-01-15 13:15:00",
                imgsrc = "https://picsum.photos/300/200?random=6",
                url = "https://example.com/news/6",
                replyCount = 98,
                isFavorite = false,
                category = "汽车"
            ),
            News(
                docid = "7",
                title = "健康新闻：冬季养生小贴士",
                digest = "冬季是养生的好时节，专家建议多食用温补食物，注意保暖...",
                source = "健康时报",
                ptime = "2024-01-15 12:30:00",
                imgsrc = "https://picsum.photos/300/200?random=7",
                url = "https://example.com/news/7",
                replyCount = 45,
                isFavorite = false,
                category = "健康"
            ),
            News(
                docid = "8",
                title = "教育新闻：在线教育发展迅速",
                digest = "疫情期间在线教育快速发展，为学生学习提供了新的选择...",
                source = "教育周报",
                ptime = "2024-01-15 11:45:00",
                imgsrc = "https://picsum.photos/300/200?random=8",
                url = "https://example.com/news/8",
                replyCount = 234,
                isFavorite = false,
                category = "教育"
            ),
            News(
                docid = "9",
                title = "社会新闻：城市绿化建设取得新进展",
                digest = "本市绿化建设取得新进展，多个公园和绿地项目即将完工...",
                source = "城市日报",
                ptime = "2024-01-15 06:30:00",
                imgsrc = "https://picsum.photos/300/200?random=9",
                url = "https://example.com/news/9",
                replyCount = 45,
                isFavorite = false,
                category = "社会"
            ),
            News(
                docid = "10",
                title = "健康新闻：专家建议保持良好作息习惯",
                digest = "健康专家提醒市民保持良好的作息习惯，有助于提高免疫力和工作效率...",
                source = "健康时报",
                ptime = "2024-01-15 11:15:00",
                imgsrc = "https://picsum.photos/300/200?random=10",
                url = "https://example.com/news/10",
                replyCount = 78,
                isFavorite = false,
                category = "健康"
            )
        )
    }
}


